ワークフローのカスタムコード記述仕様
背景:セキュリティ上の理由から、【pythonカスタムスキルコード】および【高度なオーケストレーション-コードノード】に対して、コード記述の規範を説明します。
サポートされているPythonパッケージ
1. 組み込み関数と型
dict
sorted
filter
map
enumerate
2. 標準ライブラリモジュール
データ処理
json
decimal
uuid
base64
hashlib
文字列処理
re
(正規表現)string
textwrap
difflib
(差分比較)
データ構造とアルゴリズム
copy
bisect
(二分探索)heapq
(ヒープキュー)statistics
(統計計算)
数学計算
math
operator
(演算子関数)
日付と時間
datetime
time
calendar
その他ツール
random
(乱数生成)requests
(HTTPリクエスト)
3. 型アノテーション(typing
モジュール)
typing
(モジュール本体)Any
Union
Optional
Literal
Final
ClassVar
TypeVar
Generic
Protocol
runtime_checkable
overload
cast
TYPE_CHECKING
NoReturn
List
Dict
Set
Tuple
FrozenSet
Deque
Counter
ChainMap
OrderedDict
DefaultDict
MutableMapping
MutableSequence
MutableSet
Mapping
Sequence
AbstractSet
Collection
Container
Iterable
Iterator
Reversible
Sized
Hashable
Callable
Awaitable
Coroutine
AsyncIterable
AsyncIterator
AsyncGenerator
Generator
ContextManager
AsyncContextManager
構文規範
安全な環境分離などの制限を使用しているため、記述者は関連する規範に従ってコードを書く必要があります。前提:組み込み構文と組み込みライブラリ、および限定された標準ライブラリのみサポートされます。
- mathモジュールの使用
import math
def calculate(a, b):
result = math.fsum([a, b])
return result
誤った書き方:
from math import fsum
def calculate(a, b):
result = fsum([a, b])
return result
説明:現在のコードブロックのインポート制限では、importパッケージ時に親パッケージのみのインポートが許可されており、from a import bの構文はサポートされていません。
- datetimeの使用
正しい書き方:
import typing
from datetime import datetime
def get_weather(location: str, date: typing.Optional[str] = None) -> dict:
# デフォルト日付の処理
if date is None:
formatted_date = datetime.datetime.now().strftime("%Y-%m-%d")
else:
try:
# よくある日付フォーマットを解析
if len(date) == 8 and date.isdigit():
# YYYYMMDD形式の処理
date_obj = datetime.datetime.strptime(date, "%Y%m%d")
else:
# 標準形式YYYY-MM-DDを試す
date_obj = datetime.datetime.strptime(date, "%Y-%m-%d")
formatted_date = date_obj.strftime("%Y-%m-%d")
except ValueError:
# フォーマットが一致しない場合、元の入力を使用(API呼び出し失敗の可能性あり)
formatted_date = date
# ここはダミーデータです。実際のアプリケーションでは天気APIを呼び出す場合があります
weather_data = {
"location": location,
"date": formatted_date,
"forecast": "sunny",
"temperature": "25°C",
"wind": "light breeze"
}
return weather_data
誤った書き方:
from typing import Optional, List, Dict, Any, Union, Callable
from datetime import datetime
...省略...